<?php
require_once (__DIR__ . "/../conf/config.php");
require_once (__DIR__ . "/../funciones.php");
class Carrito
{
	public $id_carrito;
	public $aDefinition = array (
			"tabla" => "CARRITO",
			"primary_key" => "ID_CARRITO",
			"id_cliente" => null,
			"fecha_creacion" => null,
			"tipo_envio" => null,
			"metodo_pago" => null 
	);
	public $aItemsCarrito = array ();
	/**
	 * Constructor por defecto
	 * Si existe la sesion carrito se obitenen los datos de la tabla
	 * Si no crea una nueva carrito obteniendo la id del cliente desde el contexto.
	 */
	public function __construct($idCarrito = null)
        {
		if (isset ( $idCarrito ))
                {
			// die("no existe isset session");
			$con = abrirConexion ();
			$sql = "SELECT *
                FROM CARRITO 
                WHERE `ID_CARRITO` = " . ( int ) $idCarrito;
			if ($res = mysqli_query ( $con, $sql ) or die ( "Error al recuperar cons de Carrito." ))
                        {
				while ( $tupla = mysqli_fetch_array ( $res ) )
                                {
					$this->aDefinition ['id_cliente'] = $tupla ["ID_CLIENTE"];
					$this->aDefinition ['fecha_creacion'] = $tupla ["FECHA_CREACION"];
					$this->aDefinition ["tipo_envio"] = $tupla ['TIPO_ENVIO'];
					$this->aDefinition ["metodo_pago"] = $tupla ['METODO_PAGO'];
				}
				cerrarConexion ( $con );
				$this->id_carrito = $idCarrito;
			}
		} else {
			
			if (isset ( $_SESSION ['id_carrito'] ))
                        {
				$con = abrirConexion ();
				$sql = "SELECT *
                    FROM CARRITO
                    WHERE `ID_CARRITO` = " . ( int ) $_SESSION ['id_carrito'];
				// return $sql;
				
				if ($res = mysqli_query ( $con, $sql ) or die ( "Error al recuperar cons de Carrito." )) {
					while ( $tupla = mysqli_fetch_array ( $res ) ) {
						$this->aItemsCarrito ['id_cliente'] = $tupla ["ID_CLIENTE"];
						$this->aItemsCarrito ['fecha_creacion'] = $tupla ["FECHA_CREACION"];
						$this->aItemsCarrito ["tipo_envio"] = $tupla ['TIPO_ENVIO'];
						$this->aItemsCarrito ["metodo_pago"] = $tupla ['METODO_PAGO'];
					}
					cerrarConexion ( $con );
					$this->getItemsCarrito ();
				}
			} else {
				$this->anadirCarrito ();
			}
		}
	}
	
	/**
	 * devuelve el elemento de la matriz que se pasa por parametro
	 *
	 * @param
	 *        	string
	 *        	return string
	 */
	public function __get($atributo)
        {
		if (isset ( $this->aDefinition [$atributo] ))
                {
			return $this->aDefinition [$atributo];
		} else {
			return false;
		}
	}
	
	/**
	 * establece un valor a la matriz
	 * atributos validos para posteriormente anadir un producto: nombre, descripcion, precio, cantidad, id_categoria, id_subcategoria
	 *
	 * @param
	 *        	string elemento de la matriz
	 * @param
	 *        	valor que se asigna a la matriz
	 */
	public function __set($atributo, $valor)
        {
		if (isset ( $this->aDefinition [$atributo] ))
                {
			$this->aDefinition [$atributo] = $valor;
		}
	}
	/*
	 * Devuelve los Items anadidos de una Carrito
	 * return array
	 */
	public function getItemsCarrito()
        {
		die ( "Llamada a ItemCarrito()" );
		$oItemCarrito = new ItemSCarrito ();
		$this->aItemsCarrito = $oItemCarrito->leerItemCarrito ();
		return $this->aItemsCarrito;
	}
	public function anadirCarrito()
        {
		$fechaActual = date ( "Y-m-d H:i:s" );
		$sql = 'INSERT INTO `CARRITO` (`ID_CLIENTE`, `FECHA_CREACION`)
                            VALUES (' . $_SESSION ['id_cliente'] . ', "' . $fechaActual . '")';
		$con = abrirConexion ();
		if (! $res = mysqli_query ( $con, $sql ))
                {
			echo "Error crear Carrito... anadirCarrito";
		}
	}
	public function getAllElements()
        {
		if (isset ( $this->id_carrito ))
                {
			$con = abrirConexion ();
			$sql = "SELECT *
                FROM CARRITO
                WHERE `ID_CARRITO` = " . ( int ) $this->id_carrito;
			
			if ($res = mysqli_query ( $con, $sql ) or die ( "Error consulta getAllElements Carrito" ))
                        {
				while ( $tupla = mysqli_fetch_array ( $res ) ) {
					$this->aItemsCarrito ['id_cliente'] = $tupla ["ID_CLIENTE"];
					$this->aItemsCarrito ['fecha_creacion'] = $tupla ["FECHA_CREACION"];
					$this->aItemsCarrito ["tipo_envio"] = $tupla ['TIPO_ENVIO'];
					$this->aItemsCarrito ["metodo_pago"] = $tupla ['METODO_PAGO'];
				}
				cerrarConexion ( $con );
				return $this->aDefinition;
			} else {
				return "Error getAllElements Carrito";
			}
		}
	}
	public function eliminarCarrito()
        {
		if (isset ( $_SESSION ['id_carrito'] ))
                {
			$con = abrirConexion ();
			$sql = 'DELETE FROM `ITEM_CARRITO`
                        WHERE   ID_CARRITO = ' . $_SESSION ['id_carrito'];
			if ($res = mysqli_query ( $con, $sql ) or die ( "Error eliminar  Item_Carrito from Carrito" )) {
				$sql = 'DELETE FROM `CARRITO`
                    WHERE   ID_CARRITO = ' . $_SESSION ['id_carrito'];
				if (! $res = mysqli_query ( $con, $sql ) or die ( "Error eliminar  Item_Carrito from Carrito" ))
                                {
					echo "Error eliminar Carrito from carrito";
				}
			}
		} else {
			$sql = 'DELETE FROM `ITEM_CARRITO`
                        WHERE   ID_CARRITO = ' . $this->id_carrito;
			if ($res = mysqli_query ( $con, $sql ) or die ( "Error eliminar  Item_Carrito from Carrito" )) {
				$sql = 'DELETE FROM `CARRITO`
                    WHERE   ID_CARRITO = ' . $this->id_carrito;
				if (! $res = mysqli_query ( $con, $sql ) or die ( "Error eliminar  Item_Carrito from Carrito" )) {
					echo "Error eliminar Carrito from carrito";
				}
			}
		}
	}
        public function calcularPrecioCarrito()
        {
                    // calcula el sumatorio vigente
                $this->aItemsCarrito['AcumPrecio'] = 0;
                $this->aItemsCarrito['AcumIVA'] = 0;
                $this->aItemsCarrito['AcumPeso'] = 0;
                $this->aItemsCarrito['AcumPrecioVP'] = 0;
                $this->aItemsCarrito['TotalCargo'] = 0;
                $this->aItemsCarrito['GastosEnvio'] = 0;
                
                foreach ($this->_aItems as $item)
                {
                    $this->aItemsCarrito['AcumPrecio'] += $item['PrecioT'];
                    $this->aItemsCarrito['AcumIVA'] += $item['IVAT'];
                    $this->aItemsCarrito['AcumPeso'] += $item['PesoT'];
                    $this->aItemsCarrito['AcumPrecioVP'] += $item['PrecioVP'];
                }
                // Calcula los gastos de envío
                $this->aItemCarrito['GastosEnvio']=tarifaEnvio($this->aItemsCarrito['AcumPeso'],$this->aItemsCarrito['TipoEnvio']);
                // Calcula el cargo total
                $this->aItemCarrito['TotalCargo']=$this->AcumPrecioVP+$this->GastosEnvio;
        }
        /*
         * Devuelve la cantidad de items que tiene el carrito
         * return int
         */
        public function totalItemsCarrito() {
	
            $i = count($this->aItemsCarrito);
            return $i;	
        } // fin función cantItemsCesta

}

?>